๐Ÿ‹Web Architecture - Checkpoint Solution with Socrative

โœ๐ŸปSocrative ์˜ค๋‹ต๋…ธํŠธ

web1

1. ๐. ์›น ์•„ํ‚คํ…์ณ ์ „๋ฐ˜์„ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฌธ์žฅ์—์„œ ๋นˆ ์นธ์— ๋“ค์–ด๊ฐˆ ํ‚ค์›Œ๋“œ๋ฅผ ์•Œ๋งž๊ฒŒ ๋‚˜์—ดํ•˜๋ฉด?

ํด๋ผ์ด์–ธํŠธ๋Š” ์ธํ„ฐ๋„ท์— ์—ฐ๊ฒฐ๋œ ์‚ฌ์šฉ์ž์˜ ๋””๋ฐ”์ด์Šค, ๋˜๋Š” ์›น์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋œปํ•œ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ [ A ] ๊ฐ€ ์žˆ๋Š”๋ฐ, [ A ] ๋Š” HTML, CSS, JavaScript ๋“ฑ์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ถ€ ์—”์ง„์œผ๋กœ ํ•ด๋…ํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ปจํ…์ธ ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ์ž์›์„ ์š”์ฒญํ•˜๋ฉด ํ•ด๋‹น ์š”์ฒญ์„ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์ž์›์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช…์‹œํ•ด ๋‘” ์ธํ„ฐํŽ˜์ด์Šค [ B ] ์— ๋”ฐ๋ผ ์š”์ฒญ์„ ์ „์†กํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ [ C ] ๋ผ๋Š” ํ†ต์‹  ๊ทœ์•ฝ ๋•๋ถ„์ด๋‹ค.

์ •๋‹ต : ๋ธŒ๋ผ์šฐ์ €, api, http

๐Ÿ…ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„, api ๋ฅผ ๋„์‹ํ™”ํ•œ ๊ทธ๋ฆผ ์ฐธ์กฐ

web2

api ๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•˜๋ฉด ์ ์ ˆํ•˜๊ฒŒ ์„œ๋ฒ„์˜ ์ž์›์„ ๊ฐ€์ ธ๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ดํŒ ๊ฐ™์€ ๊ฑฐ๋‹ค. ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š” ๋„๊ตฌ์ด๋‹ค.

์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š” ์ฃผ์ฒด๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์ด๋‹ค.

2. ๐. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๋ชจ๋ธ์—์„œ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ์—ญํ• ์— ๋Œ€ํ•œ ๋‹ค์Œ์˜ ์„ค๋ช… ์ค‘ ํ‹€๋ฆฐ ๊ฒƒ์€?

A. ์„œ๋ฒ„: ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ๋‹ค.๐—ซ โ€”โ€”->>> ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งž๋‹ค.

B. ํด๋ผ์ด์–ธํŠธ: ์œ ์ €์™€์˜ ์ „๋ฐ˜์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•œ๋‹ค.

C. ์„œ๋ฒ„: ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์‘๋‹ต์„ ๋˜๋Œ๋ ค ์ค€๋‹ค.

D. ํด๋ผ์ด์–ธํŠธ: ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์‘๋‹ต์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ™”๋ฉด์„ ํ‘œ์‹œํ•œ๋‹ค.

์ •๋‹ต A

3. ๐. AJAX์— ๋Œ€ํ•œ ๋‹ค์Œ ์„ค๋ช… ์ค‘ ์˜ณ์ง€ ์•Š์€ ๊ฒƒ์€?

A. AJAX ๋„์ž… ์ „์—๋Š” XMLHttpRequest๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •์ ์œผ๋กœ ํŽ˜์ด์ง€ ๋žœ๋”๋ง์„ ํ–ˆ๋‹ค.๐—ซ - ์ •์ ์ด ์•„๋‹ˆ๋ผ ๋™์ ์œผ๋กœ ๊ฐ€ ๋งž๋‹ค.

B. AJAX๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ›๊ณ , ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋งŒ ๋™์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

C. ๋น„๋™๊ธฐ์ ์ธ ์›น์•ฑ ์ œ์ž‘์„ ์œ„ํ•œ ์›น ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์ด๋‹ค.

D. Fetch API๋ฅผ ํ†ตํ•ด AJAX ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

์ •๋‹ต A

AJAX๋Š” ์‚ฌ์‹ค Fetch(ํ˜น์€ XMLHttpRequest) + DOM + ๋น„๋™๊ธฐ ์ด๋Ÿฐ๊ฑธ ๊ทธ๋ƒฅ ๋‹ค ์งฌ๋ฝ•ํ•œ ์šฉ์–ด๋ผ๊ณ  ํ•œ๋‹ค. ๋”ฐ๋กœ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค๊ณ  ํ•จ.

AJAX ๋Š” JS ๋ฅผ ์‚ฌ์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ , ํด๋ผ์™€ ์„œ๋ฒ„๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ์ˆ ์ด๋‹ค.

AJAX๊ฐ€ ์—†์—ˆ๋‹ค๋ฉด ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ ์ถ”์ฒœ์€ ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์„ ๊ฑฐ๋ผ๊ณ  ํ–ˆ์Œ.

AJAX ๋ผ๋Š” ์šฉ์–ด๋ณด๋‹ค SPA ๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋” ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค.

์—์–ด๋น„์—”๋น„ ์‚ฌ์ดํŠธ ๋‚˜ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰์ฐฝ์— ๋ญ”๊ฐ€ ์ž…๋ ฅํ•  ๋•Œ ๊ทธ ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋ง์ด ๋˜์–ด ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

https://sungmooncho.com/2012/12/04/gmail-and-ajax/

4. ๐. ๋‹ค์Œ ์ค‘ fetch, XMLHttpRequest, jQuery ajax ๋ฉ”์†Œ๋“œ์˜ ๊ณตํ†ต์ ์€ ๋ฌด์—‡์ผ๊นŒ์š”?

A. ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ, ์„œ๋ฒ„์— ์ž์›์„ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์•„ ์˜ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” API๋‹ค.O

B. ๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹ ๋ฐฉ์‹์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค. - fetch, jquery ajax ์—๋งŒ ํ•ด๋‹น๋จ

C. ์›น API๋กœ์„œ ๋ณ„๋„์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. - jquery ajax ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฉ”์†Œ๋“œ ์ฒด์ด๋‹์˜ ์˜ˆ์‹œ - ๊ณ ์ฐจ ํ•จ์ˆ˜

web3

5. ๐. fetch API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ http://codestates.com/์— get ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ๋ฐ›์€ response์˜ body๋ฅผ json ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด ์ฝ˜์†”์— ์ถœ๋ ฅํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋นˆ ์นธ์— ๋“ค์–ด๊ฐˆ ๋‚ด์šฉ์„ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ ์ฃผ์„ธ์š”.

web4

์ •๋‹ต : res.json(), then, catch

๊ธฐํƒ€ ์ˆ˜๊ฐ•์ƒ๋ถ„๋“ค์˜ ์งˆ๋ฌธ ๋ชจ์Œ

์„œ๋ฒ„๋Š” JSON ์œผ๋กœ ๋ณ€ํ˜•๋œ ๊ฐ์ฒด๋งŒ ํ•ด์„ํ•  ์ˆ˜ ์ž‡๋Š”๊ฑด๊ฐ€์š”? JSON ์™ธ์—๋„ XMLhttp ๋“ฑ๋“ฑ ์ด ์žˆ์ง€๋งŒ ๋Œ€์ฒด๋กœ ์ œ์ด์Šจ์ด ๋งŽ๋‹ค.

์ผ๋ฐ˜ ๊ฐ์ฒด๋ฅผ ์„œ๋ฒ„๊ฐ€ ํ•ด์„ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” JSON.stringyfy() ๊ฐ€ ํ•„์š”ํ•˜๋‹ค!

HTTP ์ฐธ์กฐ ๋งํฌ.

https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

Fetch ๋‚ด์˜ url ์ฃผ์†Œ๋Š” api ๋ฅผ ์ œ๊ณต? ํ•˜๋Š” ์ฃผ์†Œ์— ํ•œํ•ด์„œ๋งŒ ํ•ด๋‹น๋œ๋‹ค!

http ๋Š” ํŽธ์ง€์ง€ ์–‘์‹ ๊ฐ™์€ ๊ฒƒ (request, response ๋ฅผ ๋‹ด์•„์„œ)

fetch ์—์„œ get ์š”์ฒญ์€ ์ƒ๋žตํ•ด์„œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทผ๋ฐ ๋‚˜๋จธ์ง€๋Š” post ๋‚˜ ์ด๋Ÿฐ ์•„์ด๋“ค์€ ์จ์ค˜์•ผ ํ•œ๋‹ค๋„ค? ์ด๊ฑด ๋ชจ์งˆ๋ผ ์‚ฌ์ดํŠธ fetch ์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


Written by@[DotoriMook]
ํ”„๋ก ํŠธ์—”๋“œ ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž ๋„ํ† ๋ฆฌ๋ฌต์˜ ๊ธฐ์ˆ ๊ฐœ๋ฐœ ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

GitHubMediumTwitterFacebook